package juego.control;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;

import juego.enemigo.Enemigo;
import juego.main.Juego;
import juego.niveles.Nivel;
import juego.powerups.PowerUp;



public class Personaje extends JLabel {
	protected Nivel level;
	protected int x=13;
	protected int y=17;
    protected int up=0;
    protected int vidas=1;
    protected int puntaje=0;
    protected JLabel jlabel1;
    protected int estrellas=0;
    protected Grande miCaracteristicaGrande;
    protected Chico miCaracteristicaChica;
    protected Inmune miCaracteristicaInmune;
    protected Caracteristica miCaracteristica;
    protected Caracteristica reservada;
    protected Juego ventanaPrincipal;
    
    
   public Personaje(Juego v,Nivel level, JLabel juego){
		super();
		this.level=level;
		this.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/lindos/QUIETO.gif")));
		jlabel1=juego;
		miCaracteristicaGrande= new Grande (this, x, y, juego, up);
		miCaracteristicaChica= new Chico  (this, x, y, juego, up);
		miCaracteristicaInmune=new Inmune  (this, x, y, juego, up);
		miCaracteristica=miCaracteristicaChica;
		ventanaPrincipal=v;
		}
	
	public Nivel getLevel(){
		return level;
		}
	
	public Juego getVentanaPrincipal(){
		return ventanaPrincipal;
		
	}
	public void setPuntaje(int puntos){
		puntaje=puntos;
		}
	
	public boolean esChiquito(){
	return miCaracteristica.soy();
		}
	
	public Caracteristica miCaract(){
		return miCaracteristica;
		}
	public void setCaracteristica(Caracteristica c,int x, int y, int up){
		int	aux1=c.dameXtuya();
		int aux2=c.dameYtuya();
		int aux3=c.dameUptuyo();
		if (c.soy()){
			miCaracteristica=new Chico (this, x, y, jlabel1,up);}
		else{miCaracteristica=new Grande (this, x, y, jlabel1,up);}
		
	}
	public  void  disparar(){
		miCaracteristica.dispara();
		}
	
	public void hacerChiquito(){
		int	aux1=miCaracteristica.dameXtuya();
		int aux2=miCaracteristica.dameYtuya();
		int aux3=miCaracteristica.dameUptuyo();
		
		this.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/lindos/QUIETO.gif")));
		miCaracteristica=new Chico (this, aux1, aux2+1, jlabel1, aux3);
		
	}
	public Caracteristica Reservada(){return reservada;}	
	
	public void crecer(int x, int y){
		int	aux1=miCaracteristica.dameXtuya();
		int aux2=miCaracteristica.dameYtuya();
	    int aux3=miCaracteristica.dameUptuyo();
	    this.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/jugador/luigi/luigi_quieto.gif")));
		miCaracteristica=new Grande (this, x+1, y, jlabel1,aux3);
		
		}
	
	public void hacerInmune(){
		reservada=miCaracteristica;
		int	aux1=miCaracteristica.dameXtuya();
		int aux2=miCaracteristica.dameYtuya();
	    int aux3=miCaracteristica.dameUptuyo();
	  	miCaracteristica=new Inmune (this, aux1, aux2, jlabel1, up);
		this.setIcon(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/jugador/luigi/luigi_quieto.gif")));
		miCaracteristica.setearUp(aux3);
	    
		}
	
	
	public int getPuntaje(){
		return puntaje;
		}
	
	public String mostrarPuntaje(){
		return (""+puntaje);
		}
	
	public void setVidas(int vidas){
		this.vidas=vidas;
		}
	
	public int getVidas(){
		return vidas;
		}
	
	public String mostrarVidas(){
		return (""+vidas);
		}
	
	public int getXmatriz(){
		return x;
		}
	
	public int getYmatriz(){
		return y;
		}
	
	public void setXmatriz(int x){
		this.x=x;
		}
	
	public void setYmatriz(int y){
		this.y=y;
		}
	
	public void derecha(){
		miCaracteristica.derecha();
		
		}	
	
	public void izquierda(){
		miCaracteristica.izquierda();

		}
	
	public void quieto(){
		miCaracteristica.quieto();
		}
	

	public void nada(int x, int y){
		miCaracteristica.nada(x, y);
		}
		
	public void agachado(){
		miCaracteristica.agachado();
		}
		
	public void saltar(){
		miCaracteristica.saltar();
		}
		
	public void saltarIzquierda(){
		if ((this.miCaracteristica.dameYtuya()==48) || (miCaracteristica.dameYtuya()==49)){}
		else {miCaracteristica.saltarIzquierda();}
	}
	public void saltarDerecha(){
		miCaracteristica.saltarDerecha();
		}
		
	public void caer(){
		miCaracteristica.caer();
		}
		
		
	public boolean puedoIrDerecha(){
		return 	miCaracteristica.puedoIrDerecha();
		}
			
		
	public boolean puedoIrIzquierda(){
		if (this.miCaracteristica.dameYtuya()==48){
        return false;
		}
		else {return miCaracteristica.puedoIrIzquierda();}
	}
		
	public int cantidadEstrellas(){
		return estrellas;
		}
		
	public void agregarEstrella(){
		estrellas+=1;
		}
		
	public void dibujarVidas(){
		miCaracteristica.dibujarPanelVidas();
		}
		
	
	
	}